﻿using AspectCore.DynamicProxy;
using JNPF.Utils;
using System.Threading.Tasks;

namespace JNPF.Data
{
    /// <summary>
    /// AOP事务操作
    /// 版 本：V3.0.0
    /// 版 权：引迈信息技术有限公司（https://www.jnpfsoft.com）
    /// 作 者：JNPF开发平台组
    /// 日 期：2017.03.03
    /// </summary>
    public class TransactionAttribute : AbstractInterceptorAttribute
    {
        public async override Task Invoke(AspectContext context, AspectDelegate next)
        {

            LogFactory.GetLogger().Debug("AprilLogAttribute begin");
            await next(context);
            LogFactory.GetLogger().Debug("AprilLogAttribute end");
            //var dbContext = context.ServiceProvider.GetService<BaseDbContext>();
            //if (dbContext.Database.CurrentTransaction == null)
            //{
            //    await dbContext.Database.BeginTransactionAsync();
            //    try
            //    {
            //        await next(context);
            //        dbContext.Database.CommitTransaction();
            //    }
            //    catch (Exception)
            //    {
            //        dbContext.Database.RollbackTransaction();
            //        throw;
            //    }
            //}
            //else
            //{
            //    await next(context);
            //}
        }
    }
}
